// 572 [区间合并/字符串]关键字标识
// https://oj.rnd.huawei.com/problems/572/details
//给定一个关键词集合 words 和一个字符串 inputStr，要求将 inputStr
//中出现的所有关键词用标签标记： 关键词标签的起始为<b>,结束为</b>。
//把可以合并的标签进行合并，即使用最少的标签。合并规则如下：
//关键词相邻则进行合并，如 ab、cd为关键词，且在字符串中相邻，则合并为
//<b>abcd</b> 关键词相交则进行合并，如
// zhi、hid为关键词，且在字符串中相交，则合并为 <b>zhid</b>
// for()最后一个tag别忘 result += ("<b>" + tag + "</b>");
// 输入 3
// abbb def bbg
// aabbbgz
// 输出 a<b>abbbg</b>z

#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <utility>
#include <vector>
using namespace std;

class Solution {
 public:
  // 待实现函数，在此函数中填入答题代码;
  string GetTaggedString(const vector<string> &words, const string &inputStr) {
    string result;
    string strTag(inputStr.length(), '1');
    for (int i = 0; i < inputStr.length(); i++) {
      for (int j = 0; j < words.size(); j++) {
        size_t pos = inputStr.find(words[j], i);
        if (pos != string::npos) {
          int len = words[j].size();
          strTag.replace(pos, len, string(len, '0'));
        }
      }
    }
    string tag;
    for (int i = 0; i < strTag.length(); i++) {
      if (strTag[i] == '0') {
        tag += inputStr[i];
        continue;
      }
      if (!tag.empty()) {
        result += ("<b>" + tag + "</b>");
        tag.clear();
      }
      result += inputStr[i];
    }
    if (!tag.empty()) {
      result += ("<b>" + tag + "</b>");
      tag.clear();
    }
    return result;
  }
};
//==================
inline int ReadInt() {
  int number;
  std::cin >> number;
  return number;
}

void SplitString(const string &input, char sperChar, vector<string> &outArray) {
  stringstream sstr(input);
  string token;
  while (getline(sstr, token, sperChar)) {
    outArray.push_back(token);
  }
}

inline string ReadLine() {
  string line;
  getline(cin, line);
  return line;
}

int main() {
  int wordsNum = ReadInt();
  cin.ignore();
  vector<string> words;
  string wordsList = ReadLine();
  SplitString(wordsList, ' ', words);
  words.resize(wordsNum);
  string inputStr = ReadLine();

  Solution solu;
  string result = solu.GetTaggedString(words, inputStr);
  cout << result;
  return 0;
}
